package com.yxh.www.author.api;

import com.yxh.www.author.domain.SmRole;
import com.yxh.www.common.result.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 授权中心 - 系统角色API集
 * </p>
 *
 * @author yangxiaohui
 * @since 2020/5/12
 */
@FeignClient(value = "author-server", contextId = "authorSmRole")
public interface AuthorSmRoleApi {
    /**
     * 新增系统角色
     *
     * @param roleName 角色名称    必填
     * @param roleKey  角色唯一标识  必填 唯一
     * @param remark   备注  非必填
     * @return 统一响应 {@link Result}
     */
    @PostMapping("/smRole/addSmRole")
    Result<Object> addSmRole(@RequestParam String roleName,
                             @RequestParam String roleKey,
                             @RequestParam(required = false) String remark);

    /**
     * 修改系统角色
     *
     * @param id         角色ID   必填
     * @param roleStatus 角色状态  非必填
     * @param remark     角色备注   非必填
     * @return 统一响应 {@link Result}
     */
    @PutMapping("/smRole/modifySmRole")
    Result<Object> modifySmRole(@RequestParam String id,
                                @RequestParam(required = false) String roleStatus,
                                @RequestParam(required = false) String remark);

    /**
     * 根据ID删除系统角色
     *
     * @param ids 角色ID集合
     * @return 统一响应 {@link Result}
     */
    @DeleteMapping("/smRole/removeSmRole")
    Result<Object> removeSmRole(@RequestParam String[] ids);


    /**
     * 查询系统角色列表
     *
     * @param roleName 角色名称    模糊查询
     * @return 统一响应 {@link Result<List>} 实体 {@link SmRole}
     */
    @GetMapping("/smRole/listSmRole")
    Result<List<SmRole>> listSmRole(@RequestParam(required = false) String roleName);

    /**
     * 分页查询系统角色列表
     *
     * @param roleName 角色名称    模糊查询
     * @param pageNum  页码          默认值 1
     * @param pageSize 页面数据长度    默认值 20
     * @return 统一响应 {@link Result}
     */
    @GetMapping("/smRole/pageSmRole")
    Result<Object> pageSmRole(@RequestParam(required = false) String roleName,
                              @RequestParam(defaultValue = "1") Long pageNum,
                              @RequestParam(defaultValue = "20") Long pageSize);


}
